package com.common.factory;

import cn.hutool.json.JSONObject;
import com.common.authentication.Oauth2ModeAuthentication;
import com.common.pojo.Oauth2Mode;

/**
 * @Description: Oauth2身份认证信息工厂类
 * @Date: 2025/6/6 11:23
 */
public interface Oauth2AuthenticationFactory<M extends Oauth2Mode, A extends Oauth2ModeAuthentication> {
    /**
     * 判断当前认证类型是否存在
     * @param grantType
     * @return
     */
    boolean support(String grantType);

    /**
     * 身份认证
     * @param bodyJsonObject
     * @return
     */
    A authentication(JSONObject bodyJsonObject);
}
